home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_02_04 / 2n04043a < prev    next >
Text File  |  1990-12-27  |  2KB  |  85 lines

  1. #include    "sm.h"
  2. #include    <stdio.h>
  3. #include    <string.h>
  4. #include    <conio.h>
  5. #include    <io.h>
  6. #include    <fcntl.h>
  7. #include    <sys\stat.h>
  8. #include    <stdlib.h>
  9.  
  10. /******************************************************************
  11. *    Digitize speech (or other sound) and store the digitized sound
  12. *    in a specified file.
  13. *
  14. *    Parameters:
  15. *        File - file name to use for output, with no extension.
  16. *
  17. *    Notes:
  18. *        1.  This version uses ADPCM 3 recording with silence suppresion
  19. *
  20. *        2.    Compiled with TurboC's large memory model, case sensitive link
  21. *            turned off.
  22. *
  23. *        3.    Requires files sm.h and cvxtlcc.lib, both of which are
  24. *            supplied by Covox.
  25. *
  26. *    Copyright:
  27. *        Original code by William H. Roetzheim (619) 669-6970
  28. *        Copyright 1990 by William H. Roetzheim
  29. *        All rights reserved.
  30. **********************************************************************/
  31.  
  32. void main (int argc, char *argv[])
  33. {
  34.     int        i;
  35.     long    lLength;
  36.     char    *lpBuffer;
  37.     char    szFileName[15];
  38.     int        nFile;
  39.  
  40.     if (argc != 2)
  41.     {
  42.         printf ("\nsyntax:  Record filename");
  43.         exit (-1);
  44.     }
  45.  
  46.     /* test for extension in filename */
  47.     for (i = 0; i < strlen (argv[1]); i++)
  48.     {
  49.         if (argv[1][i] == '.')
  50.         {
  51.             printf ("\n File name should not have an extension.");
  52.             exit (-1);
  53.         }
  54.     }
  55.  
  56.     strcpy (szFileName, argv[1]);
  57.     strcat (szFileName, ".v3s");    /* ADPCM 3 compression, silence encoding */
  58.     nFile = open (szFileName, O_BINARY | O_RDWR | O_CREAT, S_IREAD | S_IWRITE);
  59.     if (nFile == -1)
  60.     {
  61.         printf ("\nError opening file.");
  62.         exit (-1);
  63.     }
  64.  
  65.     lpBuffer = malloc (0xFFFF);    /* Pick a number that's plenty big */
  66.     printf ("\nPress any key to start recording.");
  67.     getch();
  68.     printf ("\nPress any key to stop recording.");
  69.     lLength = record3s (lpBuffer, 0xFFFF, 0, 0, 6);
  70.         /* lLength will be actual bytes in buffer used */
  71.         /* 0xFFFF is the size of the buffer */
  72.         /* The first 0 is rate, we're using the default of 132 */
  73.         /* The second 0 is port, we're using Voice Master factory default */
  74.         /* The 6 tells the routine to use the default for silence encoding */
  75.         /* */
  76.         /*    To record using a different encoding scheme, we would just */
  77.         /* change the call to the appropriate flavor of record */
  78.  
  79.     if (kbhit()) getch();    /* flush buffer if user pressed key to stop */
  80.  
  81.     /* done, output results and clean up */
  82.     write (nFile, lpBuffer, lLength);
  83.     close (nFile);
  84.     free (lpBuffer);
  85. }